/**
 * 处理axios封装，前置守卫
 */
import axios from "axios";
import { ElMessage } from "element-plus";
import { userStore } from "@/store/module/acl/user";

//获得axios对象，然后可以进行基础信息处理与配置
let request = axios.create({
  // 基础路径处理
  baseURL: import.meta.env.VITE_APP_BASE_API_COMM,
  //超时时间
  timeout: 5000,
});

//request 添加拦截器 请求拦截器  以及 响应拦截器
request.interceptors.request.use((config) => {
  //config 配置对象添加请求头
  let user = userStore();
  if (user.token) {
    config.headers.token = user.token;
  }
  // 返回配置对象
  return config;
});

//响应拦截器
request.interceptors.response.use(
  (response) => {
    //先行处理去掉返回信息 成功的时候的code
    return response.data;
  },
  (error) => {
    //失败以后的处理
    //错误信息
    let message = "";
    //错误编码 http 状态码
    let status = error.response.status;
    switch (status) {
      case 401:
        message = "TOKEN过期";
        break;
      case 403:
        message = "无权访问";
        break;
      case 404:
        message = "请求地址、路径出错";
        break;
      case 500:
        message = "服务器出错";
        break;
      default:
        message = "网络出错";
    }
    ElMessage({
      type: "error",
      message,
    });
    return Promise.reject(error);
  }
);

// 暴露对象
export default request;
